package org.generic.work;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 定义泛型类DAO<T>，在其中定义一个Map成员变量，Map的键为String类型，值为T类型
 * @author CSY
 * @date 2025 - 03 - 23
 */
public class DAO<T> {
    private Map<String,T> map;
    /**
     * 保存T类型的对象到Map成员变量中
     * @param id
     * @param entity
     */
    public void save(String id,T entity){
        map = new HashMap<String,T>();
        map.put(id,entity);
    }

    /**
     *
     * 从map中获取id对应的对象
     * @param id
     * @return
     */
    public T get(String id){
        for (Map.Entry<String, T> entry : map.entrySet()){
            if(entry.getKey().equals(id)){
                return entry.getValue();
            }
        }
        return null;
    }

    /**
     * 替换map中key为id 的内容，改为entity对象
     * @param id
     * @param entity
     */
    public void update(String id,T entity){
        for (Map.Entry<String, T> entry : map.entrySet()){
            if(entry.getKey().equals(id)){
                entry.setValue(entity);
            }
        }
    }

    /**
     * 返回map中存放的所有T对象
     * @return
     */
    public List<T> list(){
        List<T> list = new ArrayList<T>();
        for (Map.Entry<String, T> entry : map.entrySet()){
            list.add(entry.getValue());
        }
        return list;
    }

    /**
     * 删除指定id对象
     * @param id 编号
     */
    public void delete(String id){
        for (Map.Entry<String,T> entry : map.entrySet()){
            if(entry.getKey().equals(id)){
                map.remove(id);
            }
        }
    }
}
